package com.amado.course31;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateTest {
	final static String DEFAULT_FORMART_STRING = "yyyy-MM-dd HH:mm:ss";

	public static void main(String[] args) {
		Date date = new Date();
		System.out.println("date = " + date.getTime());
		// getTime返回毫秒,/1000(毫秒)/60(秒)/60(分)/24(时)/365(天)=1970+48=2018
		System.out.println(date.getTime() / 1000 / 60 / 60 / 24 / 365);
		//日期格式化对象
		SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss:SSS");
		System.out.println(format.format(date));
		
		SimpleDateFormat format2 = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss:SSS");
		//日期类型转换成字符串
		String strDate = format2.format(date);
		System.out.println(strDate);

		SimpleDateFormat format3 = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss:SSS");
		try {
			//把字符串转换成日期对象类型，
			Date newDate = format3.parse(strDate);
			System.out.println("new date = " + newDate.getTime());
		} catch (ParseException e) {
			e.printStackTrace();
		}
		Date date1 = new Date(1001);
		System.out.println(format.format(date1));
		System.out.println(date.getYear()+1900);
	}

	/**
	 * 格式化日期
	 * 
	 * @param date
	 *            日期
	 * @param format
	 *            格式化模板
	 * @return 格式化后的字符串
	 */
	public static String format(Date date, String format) {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
		return simpleDateFormat.format(date);
	}

	/**
	 * 格式化日期
	 * 
	 * @param date
	 *            日期
	 * @return 格式化后的字符串
	 */
	public static String format(Date date) {
		return format(date,DEFAULT_FORMART_STRING);
	}

	/**
	 * 解析日期（字符串转换为日期）
	 * 
	 * @param date
	 *            日期（字符串）
	 * @param format
	 *            转换模板
	 * @return 日期类型
	 */
	public static Date parse(String date, String format) {
		SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format);
		try {
			return simpleDateFormat.parse(date);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return null;
	}

	/**
	 * 解析日期（字符串转换为日期）
	 * 
	 * @param date
	 *            日期（字符串）
	 * @return 日期类型
	 */
	public static Date parse(String date) {
		return parse(date,DEFAULT_FORMART_STRING);
	}
}
